The present disclosure relates generally to communication networks, and, in particular, to methods, systems, and computer program products for selectively discarding packets.
In many streaming-content applications through a network, such as streaming audio and/or video, the most important aspect of performance is real-time delivery. Timely delivery of streaming content is particularly vital in interactive communications, e.g., voice over Internet protocol (VoIP). Attempting to support streaming content often leads to congested, unresponsive networks, particularly when a large volume of network traffic is present. In heavy use networks, such as converged data and streaming-content networks, greater congestion typically results in greater latency. As latency increases, data packets can be discarded and streaming content can appear choppy as the streaming content is delayed.
One approach to handling mixed priority network traffic, such as streaming content (real time) and bulk data movement (non-real time), is through Quality of Service (QoS) guarantees. A network device, such as a router or switch, supporting QoS typically employs seven levels of priority and a bulk level of priority, queuing up traffic into different queues based on priority. As packets of network traffic arrive, the packets are prioritized and placed in corresponding priority queues. Time-sensitive data packets, such as streaming content, are typically placed into one or more higher priority queues, while general data and file transfer packets are placed into one or more lower priority queues. The queues are serviced in descending priority based on the available upstream bandwidth. The highest priority packets are placed into the upstream first, followed by packets from successively lower priority queues until all of the upstream bandwidth is utilized. However, during periods of heavy network traffic, there may be more high priority (e.g., VoIP) packets queued than can be transmitted, resulting in a saturated condition.
When a saturated condition impedes servicing a queue in a network device, which holds streaming-content packets, the network device may randomly discard packets even though they are of high priority (e.g., contain real-time content). This may result in very unpredictable call quality for VoIP, as some calls can lose several packets, while other calls lose none. Moreover, each packet may include differing amounts of content, resulting in more substantial losses for some callers, e.g., a loss of audio for a 30-millisecond duration packet is more problematic than the loss of a 10-millisecond duration packet. One example of when a saturation condition could occur is during an emergency situation, where many people attempt to use their VoIP phones at approximately the same time. The resulting unpredictable packet losses from the saturation condition can cause many VoIP calls to be dropped due to delays and interrupted service.
Another option to mitigate a saturation condition is to lower the priority of some of the higher priority traffic, through shifting higher priority packets into a lower priority queue, allowing the remaining higher priority traffic to use the available upstream bandwidth. Shifting packets to a lower priority queue may work well in a situation where the demand on higher priority queues is relatively consistent, but in an emergency situation, with a large volume of VoIP callers flooding the highest priority queue, random failures and a large drop in perceived call quality may result. Additionally, lowering the priority of some higher priority packets in a random fashion can produce the same effective result as randomly discarding packets, as lower priority queues may be infrequently serviced while the network device is saturated.
Accordingly, there is a need in the art for a method to selectively discard packets in a network device during a saturation condition so as to minimize the net effect on streaming content.